#ifndef __DFT_FFT_H
#define __DFT_FFT_H

#include <petscda.h>

struct DFTFFT {
  MPI_Comm   comm;
  PetscInt   debug;
  DA         rhoDA;                     // DA defining the domain and concentrations over it
  PetscInt   dim;                       // Dimension of the domain: 1D or 3D
  PetscInt   dims[3];                   // Number of vertices  in each direction
  PetscInt   numSpecies;
  PetscReal  L[3];
  PetscReal  h[3];
  PetscReal  *R;                        // Radius of species i [nm]
  PetscReal  maxR;                      // Maximum radius on any species
  PetscReal  T, kT;
};

struct Rho {
  PetscScalar v[NUM_SPECIES];
};



EXTERN PetscErrorCode DFTFFTCreate(DA da, PetscReal R[], PetscReal T, DFTFFT *dft);
EXTERN PetscErrorCode DFTFFTDestroy(DFTFFT *dft);




#endif /* __DFT_BASIC_H */
